import streamlit as st

class ModelConfigView:
    """模型配置视图类"""
    
    def __init__(self):
        self.init_session_state()
    
    def init_session_state(self):
        """初始化session state"""
        if 'ai_fields' not in st.session_state:
            # 使用与app_mvc中controller一致的默认AI字段列表
            st.session_state['ai_fields'] = [
                '船名', '航次', 'ETD', 'ETA', '提货日期', '船公司', 'MBL', 'HBL', 
                'ATD', '箱号', '封号', '进仓时间', '出库时间', '进港时间', 'ATA', 
                '目的港清关完成时间', '送货时间'
            ]
    
    def render(self):
        """渲染模型配置页面"""
        st.markdown("<h1 class='main-header'>模型配置</h1>", unsafe_allow_html=True)
        
        st.info("配置邮件转发内容识别的正则表达式和AI识别字段")
        
        with st.form("model_config_form"):
            # AI识别字段配置
            st.subheader("🎯 AI识别字段配置")
            
            # 将AI字段列表转换为文本显示
            current_ai_fields = st.session_state.get('ai_fields', [])
            ai_fields_text = '\n'.join(current_ai_fields)
            
            ai_fields_input = st.text_area(
                "AI识别字段列表",
                value=ai_fields_text,
                height=200,
                help="每行输入一个字段名称，这些字段将用于AI识别和数据提取",
                key="model_ai_fields"
            )
            
            # 将文本转换回列表
            new_ai_fields = [field.strip() for field in ai_fields_input.split('\n') if field.strip()]
            
            # 显示当前配置的字段数量
            st.caption(f"当前配置了 {len(new_ai_fields)} 个AI识别字段")
            
            
            # FORWARD_PATTERNS配置
            st.subheader("📧 邮件转发内容识别正则表达式")
            st.info("配置用于识别邮件转发内容的正则表达式，每行一个表达式")
            
            # 将列表转换为文本显示
            current_patterns = st.session_state.model_config.get('forward_patterns', [])
            patterns_text = '\n'.join(current_patterns)
            
            patterns_input = st.text_area(
                "FORWARD_PATTERNS",
                value=patterns_text,
                height=300,
                help="每行输入一个正则表达式，用于识别邮件中的转发内容",
                key="model_forward_patterns"
            )
            
            # 将文本转换回列表
            new_patterns = [pattern.strip() for pattern in patterns_input.split('\n') if pattern.strip()]
            
            # 显示当前配置的正则表达式数量
            st.caption(f"当前配置了 {len(new_patterns)} 个正则表达式")
            
            # 预览部分正则表达式
            if new_patterns:
                st.subheader("正则表达式预览")
                preview_count = min(5, len(new_patterns))
                for i, pattern in enumerate(new_patterns[:preview_count]):
                    st.code(f"{i+1}. {pattern}", language="regex")
                if len(new_patterns) > preview_count:
                    st.caption(f"... 还有 {len(new_patterns) - preview_count} 个正则表达式")
            
            submitted = st.form_submit_button("💾 保存模型配置", use_container_width=True)
            
            if submitted:
                # 保存AI识别字段到session_state
                st.session_state['ai_fields'] = new_ai_fields
                
                # 保存FORWARD_PATTERNS到model_config
                st.session_state.model_config['forward_patterns'] = new_patterns
                
                st.success("✅ 模型配置已保存")
                st.success(f"✅ AI识别字段已更新：{len(new_ai_fields)} 个字段")
                st.rerun()